home *** CD-ROM | disk | FTP | other *** search
-
- % Demos für TOY Prolog, 19jun86 JJK
-
- % Grafik-Demonstration (Aufruf von VDI-Funktionen)
-
- % Aufruf mit : mmove
- % Abbruch mit ShiftAltHelp
-
- mmove :- window, mmove(0, 0).
-
- mmove(OldX, OldY) :- wait(OldX, OldY, NewX, NewY), erase(OldX, OldY),
- draw(NewX, NewY), mmove(NewX, NewY).
-
- wait(OX, OY, NX, NY) :- repeat, grf_mse_state(_,NX,NY), not (OX=NX, OY=NY), !.
-
- erase(X, Y) :- sum(X, 32, X1), sum(Y, 32, Y1), grf_box(X, Y, X1, Y1).
-
- draw(X, Y) :- sum(X, 32, X1), sum(Y, 32, Y1), grf_rbox(X, Y, X1, Y1).
-
- window :- grf_mode, grf_mse_hide, grf_clip(0, 0, 0, 0, 0), grf_f_type(2),
- grf_f_style(4), grf_box(0, 0, 639, 399), grf_f_type(0),
- grf_bar(100, 100, 540, 300), grf_clip(1, 101, 101, 539, 299).
-
-
- % Zugriff auf das Diskettendirectory
-
- % Aufruf mit : directory
- % oder : directory( Pfadname )
-
- % Directory mit Angabe des Pfadnamens :
-
- directory(PName) :- disk_dir(OldPName), % alten Pfadnamen in OldPName retten
- disk_dir(PName), % neuen Pfadnamen aktivieren
- directory, % Hauptfunktion aufrufen
- disk_dir(OldPName). % alten Pfadnamen wiederherstellen
-
- % Directory vom aktuellen Pfad :
-
- directory :- display('Directory of '), disk_dir(X), display(X), nl,
- % Pfadnamen anzeigen
-
- disk_search(*.*, 255, FirstName, FirstAttr),
- % ersten Dateinamen suchen
-
- directory(FirstName, FirstAttr).
- % ersten Dateinamen anzeigen und weitersuchen
-
- % Hilfsfunktion : aktuelle Datei anzeigen, nächste Datei suchen;
- % rekursiver Aufruf für die nächste Datei, bis keine mehr
- % gefunden wird.
-
- directory(Name, Attr) :- namattr(Name, Attr), % anzeigen aktuelle Datei
- disk_search(NName, NAttr), % nächste Datei suchen
- directory(NName, NAttr). % und weiter geht's
-
- % falls keine Datei mehr da ist, schlägt disk_search/2 fehl, und dann ...
-
- directory(_, _) :- nl. % Zum Schluß noch eine Leerzeile
-
- % Hilfsfunktion : aktuellen Dateinamen und Attribut anzeigen
-
- namattr(Name, Attr) :- display(Name), % Namen anzeigen
- pname(Name, String), % wieviele Zeichen hat der Name ?
- length(String, Length),
- Tab is 16 - Length, % Tabulator berechnen
- tab(Tab), % genausoviele Leerzeichen ausgeben
- display(Attr), nl. % Attribut anzeigen, fertig.
-
- % Und jetzt noch eine kleine Tabulatorfunktion :
-
- tab(0) :- !. % 0 Leerzeichen braucht man nicht auszugeben.
- tab(N) :- wch(' '), % Wie gibt man N Leerzeichen aus ? Eines hinschreiben ...
- N1 is N - 1,
- tab(N1). % ... und nochmal N-1 Leerzeichen ausgeben.
-
- % (Wie man sieht, ist Prolog nichts für diejenigen, die zusammenzucken,
- % wenn sie das Wort "Rekursion" hören - solche Leute gibt es, ich treffe
- % jeden Tag welche !)
-
- end.
-
-